#include "sys_data.h"

///////////////////////////////////////////////////////////////////////////////////////////////////

namespace xos_xml
{

    sys_data::sys_data( xos::i_xos * pXosImpl ) : m_pXosImpl( pXosImpl )
    {
        m_pTime = 0;
        m_pMisc = 0;
        m_pCrt = 0;
    }

    sys_data::~sys_data()
    {
    }

    int sys_data::init()
    {
        int nRet = 0;

        if( 0 == nRet )
        {
            nRet = m_pXosImpl->create( xos::i_xos::XOS_OBJ_TIME, ( void ** )&m_pTime );
        }

        if( 0 == nRet )
        {
            nRet = m_pXosImpl->create( xos::i_xos::XOS_OBJ_MISC, ( void ** )&m_pMisc );
        }

        if( 0 == nRet )
        {
            nRet = m_pXosImpl->create( xos::i_xos::XOS_OBJ_CRT, ( void ** )&m_pCrt );
        }

        return nRet;
    }

    int sys_data::term()
    {
        using namespace std;

        int nRet = 0;

        m_xml_doc_pool.ReleaseAll();
        m_xml_node_pool.ReleaseAll();

        if( m_pTime )
        {
            m_pTime->release();
            m_pTime = 0;
        }

        if( m_pMisc )
        {
            m_pMisc->release();
            m_pMisc = 0;
        }

        if( m_pCrt )
        {
            m_pCrt->release();
            m_pCrt = 0;
        }

        if( m_pXosImpl )
        {
            m_pXosImpl = 0;
        }

        return nRet;
    }

} // xos_xml
